﻿using System;
using System.Data;
using System.Windows.Forms;

namespace Operacional
{
    public partial class frmProducao : Form
    {
        public frmProducao()
        {
            InitializeComponent();
        }

        private void frmProducao_Load(object sender, EventArgs e)
        {
            Dock = DockStyle.Fill;
            frmEntrada.tmrLogin.Enabled = false;
            Program.entrada.lblStatus.Text += string.Format(" Linha: {0}", frmLinhas.numLinha);

            lblTitulo.Text += string.Format(" na linha {0}?", frmLinhas.numLinha);

            #region Preenche Caixas Texto
            txtOrdem.Text = PedeOrdemProd.dvProducao[0][0].ToString();
            txtLote.Text = PedeOrdemProd.dvProducao[0][2].ToString();
            txtCodProduto.Text = PedeOrdemProd.dvProducao[0][3].ToString();
            txtDesProduto.Text = PedeOrdemProd.dvProducao[0][4].ToString();
            txtCodCliente.Text = PedeOrdemProd.dvProducao[0][5].ToString();
            txtNomeCliente.Text = PedeOrdemProd.dvProducao[0][6].ToString();
            txtPeso.Text = PedeOrdemProd.dvProducao[0][7].ToString();
            txtUnidades.Text = PedeOrdemProd.dvProducao[0][8].ToString();
            txtNumeroEncomenda.Text = PedeOrdemProd.dvProducao[0][9].ToString();
            txtPosicao.Text = PedeOrdemProd.dvProducao[0][10].ToString();
            txtTempo.Text = PedeOrdemProd.dvProducao[0][11].ToString();
            txtFieiras.Text = PedeOrdemProd.dvProducao[0][12].ToString();
            txtFios.Text = PedeOrdemProd.dvProducao[0][13].ToString();
            #endregion
        }

        private void btnManutenção_Click(object sender, EventArgs e)
        {
            frmManutencao manutenção = new frmManutencao();
            manutenção.MdiParent = Program.entrada;
            manutenção.Show();
            Close();
            Dispose();
        }

        private void btnInicio_Click(object sender, EventArgs e)
        {            
            if (MessageBox.Show("Confirma?", "Iniciar Produção", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                string obs = "";
                string ordemdeproducao = PedeOrdemProd.dvProducao[0].Row.ItemArray[0].ToString();
                
                for (int i = 0; i < PedeOrdemProd.dvProducao[0].Row.ItemArray.Length - 1; i++)
                    if (i != 1) obs += PedeOrdemProd.dvProducao[0].Row.ItemArray[i] + "#";                

                DataRow dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();

                #region "Linha de Inicio de Produção"

                dRow["Consumo"] = PedeOrdemProd.dvProducao[0].Row.ItemArray[15];
                dRow["Observacoes"] = "\"" + obs + "\"";
                dRow["Estado"] = "Em Producao";
                dRow["Linha"] = frmLinhas.numLinha;
                dRow["Data"] = DateTime.Now;
                dRow["Utilizador"] = frmEntrada.dvUsers[0][0].ToString();
                dRow["Ordem"] = ordemdeproducao;
                
                #endregion

                frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
                frmEntrada.daLinhasTarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

                frmLinhas linhas = new frmLinhas { MdiParent = Program.entrada };
                linhas.Show();
                Close();
                Dispose();
            }
        }

        private void frmProducao_Shown(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtFieiras.Text) || txtFieiras.Text.Trim() == "0")
            {
                cancela("Campo Fieiras ");
            }
            else
                if (string.IsNullOrEmpty(txtFios.Text) || txtFios.Text.Trim() == "0")
                {
                    cancela("Campo Fios ");
                }
                else
                    if (string.IsNullOrEmpty(txtTempo.Text) || txtTempo.Text.Trim() == "0")
                    {
                        cancela("Campo Tempo ");
                    }
                    else
                        if (PedeOrdemProd.dvProducao[0][14].ToString().Trim() == "0")
                        {
                            cancela("Campo Tempo de Bobinagem ");
                        }
                        else
                            if (PedeOrdemProd.dvProducao[0][15].ToString().Trim() == "0")
                            {
                                cancela("Campo Consumo ");
                            }
                            else btnInicio.Enabled = true;
        }

        private void cancela(string campo)
        {
            btnInicio.Enabled = false;
            MessageBox.Show(campo + "com valor 0 ou por preencher.", "Ordem de Produção incorrecta", MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);
            Close();
            frmLinhas linhas = new frmLinhas { MdiParent = Program.entrada };
            linhas.Show();
        }
    }
}